home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / Main.bin / JavaName.java < prev    next >
Text File  |  1998-09-08  |  4KB  |  228 lines

  1. package com.symantec.itools.lang;
  2.  
  3.  
  4. import java.io.File;
  5. import java.io.Serializable;
  6. import com.symantec.itools.io.FileSystem;
  7.  
  8.  
  9. /**
  10.  * @author Symantec Internet Tools Division
  11.  * @version 1.0
  12.  * @since VCafe 3.0
  13.  */
  14.  
  15. public class JavaName
  16.     implements Serializable
  17. {
  18.  
  19.     /**
  20.      * @since VCafe 3.0
  21.      */
  22.     protected String packageName;
  23.  
  24.     /**
  25.      * @since VCafe 3.0
  26.      */
  27.     protected String name;
  28.  
  29.     /**
  30.      * @since VCafe 3.0
  31.      */
  32.     protected String extension;
  33.  
  34.     public JavaName(String nm)
  35.         throws NotJavaNameException
  36.     {
  37.         this(nm, true);
  38.     }
  39.  
  40.     public JavaName(String nm, boolean checkName)
  41.         throws NotJavaNameException
  42.     {
  43.         validateName(nm, checkName);
  44.     }
  45.  
  46.     /**
  47.      * @since VCafe 3.0
  48.      */
  49.  
  50.     public String getPackage()
  51.     {
  52.         return (packageName);
  53.     }
  54.  
  55.     /**
  56.      * @since VCafe 3.0
  57.      */
  58.  
  59.     public String getName()
  60.     {
  61.         return (name);
  62.     }
  63.  
  64.     /**
  65.      * @param nm TODO
  66.      * @since VCafe 3.0
  67.      */
  68.  
  69.     public void setName(String nm)
  70.     {
  71.         name = nm;
  72.     }
  73.  
  74.     /**
  75.      * @param pkg TODO
  76.      * @since VCafe 3.0
  77.      */
  78.  
  79.     public void setPackage(String pkg)
  80.     {
  81.         packageName = pkg;
  82.     }
  83.  
  84.     /**
  85.      * @param ext TODO
  86.      * @since VCafe 3.0
  87.      */
  88.  
  89.     public void setExtension(String ext)
  90.     {
  91.         extension = ext;
  92.     }
  93.  
  94.     /**
  95.      * @since VCafe 3.0
  96.      */
  97.  
  98.     public String getExtension()
  99.     {
  100.         return (extension);
  101.     }
  102.  
  103.     /**
  104.      * @param nm TODO
  105.      * @param checkName TODO
  106.      * @exception com.symantec.itools.lang.NotJavaNameException
  107.      * @since VCafe 3.0
  108.      */
  109.  
  110.     protected void validateName(String nm, boolean checkName)
  111.         throws NotJavaNameException
  112.     {
  113.         int namePos;
  114.         int nameEndPos;
  115.         int extPos;
  116.  
  117.         namePos = nm.lastIndexOf('/');
  118.  
  119.         if(namePos == 0)
  120.         {
  121.             throw new NotJavaNameException(nm);
  122.         }
  123.  
  124.         if(namePos == -1)
  125.         {
  126.             packageName = "/";
  127.         }
  128.         else if(namePos > 0)
  129.         {
  130.             packageName = getNamePart(nm, 0, namePos);
  131.         }
  132.  
  133.         extPos = nm.lastIndexOf('.');
  134.  
  135.         if(extPos < 0)
  136.         {
  137.             nameEndPos = nm.length();
  138.         }
  139.         else
  140.         {
  141.             nameEndPos = extPos;
  142.         }
  143.  
  144.         if(checkName)
  145.         {
  146.             name = getNamePart(nm, namePos + 1, nameEndPos);
  147.         }
  148.         else
  149.         {
  150.             name = nm.substring(namePos + 1, nameEndPos);
  151.         }
  152.  
  153.         if(extPos >= 0)
  154.         {
  155.             extension = nm.substring(extPos + 1);
  156.         }
  157.     }
  158.  
  159.     /**
  160.      * @param nm TODO
  161.      * @param startPos TODO
  162.      * @param endPos TODO
  163.      * @since VCafe 3.0
  164.      */
  165.  
  166.     protected String getNamePart(String nm, int startPos, int endPos)
  167.     {
  168.         return (nm.substring(startPos, endPos).replace(File.separatorChar, '/'));
  169.     }
  170.  
  171.     /**
  172.      * @since VCafe 3.0
  173.      */
  174.  
  175.     public String getFullName()
  176.     {
  177.         if(packageName.equals("/"))
  178.         {
  179.             if(extension == null)
  180.             {
  181.                 return (name);
  182.             }
  183.  
  184.             return (name + '.' + extension);
  185.         }
  186.  
  187.         if(extension == null)
  188.         {
  189.             return (packageName + '/' + name);
  190.         }
  191.  
  192.         return (packageName + '/' + name + '.' + extension);
  193.     }
  194.  
  195.     /**
  196.      * @since VCafe 3.0
  197.      */
  198.  
  199.     public int hashCode()
  200.     {
  201.         return (getFullName().hashCode());
  202.     }
  203.  
  204.     /**
  205.      * @param obj TODO
  206.      * @since VCafe 3.0
  207.      */
  208.  
  209.     public boolean equals(Object obj)
  210.     {
  211.         String fullName;
  212.  
  213.         if(obj instanceof JavaName)
  214.         {
  215.             fullName = ((JavaName)obj).getFullName();
  216.         }
  217.         else if(obj instanceof String)
  218.         {
  219.             fullName = (String)obj;
  220.         }
  221.         else
  222.         {
  223.             return (false);
  224.         }
  225.  
  226.         return (fullName.equals(getFullName()));
  227.     }
  228. }